﻿Namespace Extension

    <AttributeUsage(AttributeTargets.Class)> _
    Public NotInheritable Class PluginAttribute
        Inherits Attribute

        Public Sub New(ByVal guid As String)
            _Guid = New Guid(guid)
        End Sub

        Private _Guid As Guid
        ''' <summary>               
        ''' プラグインの識別子(GUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 形式)
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public ReadOnly Property Guid() As Guid
            Get
                Return _Guid
            End Get
        End Property

        Private _RequireLiveProgramNotify As LiveProgramNotify
        ''' <summary>
        ''' 必要な生放送開始の通知種類
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property RequireLiveProgramNotify() As LiveProgramNotify
            Get
                Return _RequireLiveProgramNotify
            End Get
            Set(ByVal value As LiveProgramNotify)
                _RequireLiveProgramNotify = value
            End Set
        End Property

        Private _HasProgramAction As Boolean
        ''' <summary>
        ''' 放送に対する処理を持っているか
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property HasProgramAction() As Boolean
            Get
                Return _HasProgramAction
            End Get
            Set(ByVal value As Boolean)
                _HasProgramAction = value
            End Set
        End Property

        Private _HasAlertFunction As Boolean
        ''' <summary>
        ''' アラート機能を持っているか
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks>お気に入りの通知設定の選択に使用</remarks>
        Public Property HasAlertFunction() As Boolean
            Get
                Return _HasAlertFunction
            End Get
            Set(ByVal value As Boolean)
                _HasAlertFunction = value
            End Set
        End Property

        Private _HasEditableOptions As Boolean
        ''' <summary>
        ''' 設定ウィンドウを持っているか
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property HasEditableOptions() As Boolean
            Get
                Return _HasEditableOptions
            End Get
            Set(ByVal value As Boolean)
                _HasEditableOptions = value
            End Set
        End Property

        Private _PublisherUrl As String
        ''' <summary>
        ''' プラグイン情報のWebサイトURL
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property PublisherUrl() As String
            Get
                Return _PublisherUrl
            End Get
            Set(ByVal value As String)
                _PublisherUrl = value
            End Set
        End Property

    End Class

End Namespace
